
clc;

disp('Dickson')
display('Voltage vectors')
% [in C3 C2 C1 out]
A=[1 -1 0 0 -1; 0 0 1 -1 -1; 0 1 -1 0 -1; 0 0 0 1 -1];
A1=A(1:2,2:end);
A2=A(3:end,2:end);
A3=[1 0 0 0 0; 0 0 1 -1 -1];
A4=[0 1 -1 0 -1; 1 0 0 0 0];
NullA1=null(A1)
NullA1=[0 0; NullA1(1:end-1,1:end)];
NullA2=null(A2)
NullA2=[0 0; NullA2(1:end-1,1:end)];
NullA3=null(A3)
NullA3=NullA3(1:end-1,1:end);
NullA4=null(A4)
NullA4=NullA4(1:end-1,1:end);


% w vectors in the paper
dv1=NullA1
dv2=NullA2
dv3=NullA3
dv4=NullA4


%% Charge vector
display('Charge vectors')
% [in C3 C2 C1 out]
A1=[0 1 0 1 -1;1 0 1 0 1;-1 -1 0 0 0];  % Phase 1a
NullA1_0=null(A1)
NullA1=NullA1_0(2:end-1,1:end);
A2=[0 1 1 0 0; 0 1 0 1 1; 0 0 1 -1 -1; 1 0 0 0 0]; % Phase 2a
NullA2_0=null(A2)
NullA2=NullA2_0(2:end-1,1:end);

A3=[0 0 1 1 0; 0 0 0 1 -1; 0 1 0 0 0;1 0 0 0 0]; % Phase 1b
NullA3_0=null(A3)
NullA3=NullA3_0(2:end-1,1:end);

%q_in=0
A4=[0 1 1 0 0; 0 0 1 0 -1; 0 0 0 1 0; 1 0 0 0 0]; % Phase 2b
NullA4_0=null(A4)
NullA4=NullA4_0(2:end-1,1:end);


B=null([NullA1 NullA2 NullA3 NullA4]);

q1=[0 0; NullA1]
q2=[0 0; NullA2]
q3=[0; NullA3]
q4=[0; NullA4]

%% capacitor values
c=[0 0.5 1 1]';

%% Find common nullspace
dv1=dv1.*[c c];
dv2=dv2.*[c c];
NullQ1=null([dv1 -q1]);
q1=q1*NullQ1(3:4)
NullQ2=null([dv2 -q2]);
q2=q2*NullQ2(3:4)

%% Steady-state equation
NullQ=null([q1 q2 q3 q4]);

%% Final values
q1a=NullA1_0*NullQ1(3:4)*NullQ(1)
q2a=NullA2_0*NullQ2(3:4)*NullQ(2)
q1b=NullA3_0*NullQ(3)
q2b=NullA4_0*NullQ(4)

% normalized charge vectors
q=q1a+q2a+q1b+q2b;
qout=q(end);
q1a=q1a/qout
q2a=q2a/qout
q1b=q1b/qout
q2b=q2b/qout